<?php
require_once('DataAccess.php');
require_once('NotaEmpenho.php');

/**
Interface DAO de Nota Empenho. Estes mï¿½todos Nï¿½O devem ser chamados diretamente.
Ao invï¿½s disso devem ser chamados por mï¿½todos da classe Programa.
*/

class NotaEmpenhoDAO
{
      private $database;

      public function __construct( )
      {
               $this->database = DataAccess::getConnection();
      }
      
      public function  CadastrarNotaEmpenho( $notaEmpenho )
      {
      	
      		      		      		
      	$consulta = $this->database->Fetch("BEGIN");
		
		if( $consulta != FALSE )
		{
						
			$consulta = $this->database->Fetch("INSERT INTO t_nota_empenho (t_empenho_id, num_nota_empenho, valor_empenho, t_fornecedor_id, t_modalidade_id) 
			VALUES ('$notaEmpenho->empenhoId', '$notaEmpenho->numNotaEmpenho', '$notaEmpenho->valorEmpenho', '$notaEmpenho->fornecedor', '$notaEmpenho->modalidade');");
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      		}
					
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      		return FALSE;
      	}
      		
		
      		
      }
      
      public function AlterarNotaEmpenho( $notaEmpenho )
      {
      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{      		
      		$consulta = $this->database->Fetch("UPDATE t_nota_empenho 
      											SET t_empenho_id = '$notaEmpenho->id' ,
      											num_nota_empenho = '$notaEmpenho->numNotaEmpenho',
      											valor_empenho    = '$notaEmpenho->valorEmpenho',
      											t_fornecedor_id  = '$notaEmpenho->forncedor->id',
      											t_modalidade_id  = '$notaEmpenho->modalidade->id'      											
      											where id = '$notaEmpenho->id'");
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      	}
      }
      
      public function ExcluirEmpenho( $notaEmpenhoId )
      {
      	$consulta = $this->database->Fetch("BEGIN");
      	
      	if( $consulta )
      	{
      		$consulta = $this->database->Fetch("Delete from t_nota_empenho where id = '$notaEmpenhoId'");
      		
      		if ( $consulta )
      		{
      			$this->database->Fetch("COMMIT");
      			return TRUE;
      		}
      		else
      		{
      			$this->database->Fetch("ROLLBACK");
      		}
      	}
      	else
      	{
      		$this->database->Fetch("ROLLBACK");
      	}
      	
      }

      /**
      Busca na tabela t_nota_empenho por todos os registros de notas de empenho que possuam chave-estrangeira $empenhoId.
      Para cada registro encontrado serï¿½ criada uma instï¿½ncia de NotaEmpenho com os valores das colunas do registro em questï¿½o.
      Por fim, caso sejam encontrados registros, todas as instï¿½ncias criadas serï¿½o inseridas dentro de um array que serï¿½ retornado por este mï¿½todo.
      Caso contrï¿½rio, serï¿½ retornado FALSE indicando que nï¿½o foi encontrado nenhum registro.
      @empenhoId - Chave-primï¿½ria do empenho ao qual a nota de empenho esta vinculada.
      @return - Retorna um array de objetos do tipo Programa. Caso nï¿½o encontre nenhum resultado, retorna FALSE.
     */
      public function LoadNotasEmpenho( $empenhoId )
      {
             $consulta = $this->database->Fetch("SELECT * FROM t_nota_empenho WHERE t_empenho_id = '$empenhoId'");
             if( $consulta != FALSE )
             {
                  $rows = $this->database->getRow();
                  $objetos = array();

                  for( $i = 0; $i < count($rows); $i++ )
                  {
                       $notaEmpenho = new NotaEmpenho();
                       $notaEmpenho->id = $rows[$i]['id'];                                              
                       $notaEmpenho->empenhoId =  $rows[$i]['t_empenho_id'];
                       $notaEmpenho->numNotaEmpenho = $rows[$i]['num_nota_empenho'];
                       $fornecedor = new Fornecedor();
                       $forncedorSelecionado = $fornecedor->CarregarFornecedor($rows[$i]['t_fornecedor_id']);
                       $notaEmpenho = $forncedorSelecionado;
                       $licitacao = new Licitacao();
                       $licitacaoSelecionada = $licitacao->CarregarLicitacao($rows[$i]['t_modalidade_id']);                       
                       $notaEmpenho->modalidadeLicitacao = $licitacaoSelecionada;

                       $objetos[] = $notaEmpenho;
                  }

                  return $objetos;
             }
             else if( mysql_num_rows( $consulta ) == 0 )
             {
                 return FALSE;
             }
      }
      
      
      /**
      Busca na tabela t_nota_empenho pelo registro associado ï¿½ chave-primï¿½ria $id.
      Caso um registro seja encontrado serï¿½ criada uma instï¿½ncia de Programa com os valores das colunas do registro em questï¿½o.
      @id - Chave-primï¿½ria da nota de empenho  cadastrada no banco de dados.
      @return - Retorna um objeto Programa com as informaï¿½ï¿½es encontradas no registro. Caso nï¿½o encontre nenhum resultado, retorna FALSE.
      */
      public function LoadNotaEmpenho( $id )
      {
             $consulta = $this->database->Fetch("SELECT * FROM t_nota_empenho WHERE ID = '$id'");
             if( $consulta != FALSE )
             {
                 $rows = $this->database->getRow();
                 $notaEmpenho = new NotaEmpenho();
                 $notaEmpenho->id = $rows[0]['id'];                                              
                 $notaEmpenho->empenhoId =  $rows[0]['t_empenho_id'];
                 $notaEmpenho->numNotaEmpenho = $rows[0]['num_nota_empenho'];
                 $fornecedor = new Fornecedor();
                 $forncedorSelecionado = $fornecedor->CarregarFornecedor($rows[0]['t_fornecedor_id']);
                 $notaEmpenho = $forncedorSelecionado;
                 $licitacao = new Licitacao();
                 $licitacaoSelecionada = $licitacao->CarregarLicitacao($rows[0]['t_modalidade_id']);                       
                 $notaEmpenho->modalidadeLicitacao = $licitacaoSelecionada;

                 return $notaEmpenho;
             }
             else if( mysql_num_rows( $consulta ) == 0 )
             {
                 return FALSE;
             }
      }
      
}
?>
